/*
 * ConstructorBase.java
 * Copyright 2010 Universidad Francisco de Paula Santander (UFPS).
 * Todos los Derechos Reservados.
 * Creado el 30/11/2010, 11:15:16 AM
 */

package com.ufps.cuatro.util.base;

import java.io.Serializable;
import java.util.ArrayList;

/**
 * <i><b>ConstructorBase:</b></i>Esta Clase es la base para la creación de los
 * de los constructores de los controles swing.
 *
 * @author Carlos A. Torres C. - Dolly E. Guerrero. <https://code.google.com/p/tesis4dor/>
 * @version 1.0 30/11/2010
 * 
 * @see Serializable 
 * @see Cloneable
 * @see Comparable
 */
public class ConstructorBase implements Serializable, Cloneable, Comparable{
    private static final long serialVersionUID = -8402106599444511714L;

    private int id;
    private int orden;
    private ComponenteBaseStandar objComponente;
    private ArrayList<ParametroConstructorBase> objParametros;

    /**
     * Constructor por Defecto.
     * @param id @DescripcionParametro
     * @param orden @DescripcionParametro
     * @param objComponente @DescripcionParametro
     */
    public ConstructorBase(int id, int orden, ComponenteBaseStandar objComponente) {
        this.id = id;
        this.orden = orden;
        this.objComponente = objComponente;
    }

    /**
     * Devuelve el Indice dentro del Archivo de Propiedades.
     * @return Indice en el Archivo de Propiedades.
     */
    public int getId() {
        return id;
    }

    /**
     * Devuelve el Componente Base al Cual Pertenece.
     * @return Componente Base.
     */
    public ComponenteBaseStandar getObjComponente() {
       try{
        return objComponente;
        }catch(java.lang.NullPointerException ex){}
       return null;
    }

    /**
     * Devuelve el Indice del Construtor que representa.
     * @return Indice del Constructor.
     */
    public int getOrden() {
        return orden;
    }

    /**
     * Devuelve los Parametros Base definidos en el Constructor.
     * @return Vector de Parametros Base.
     */
    public ArrayList<ParametroConstructorBase> getObjParametros() {
        try{
        return objParametros;
        }catch(java.lang.NullPointerException ex){}
        return null;
    }

    /**
     * Asigna el Vector de Parametros Base para el Constructor del Componente Base.
     * @param objParametros @DescripcionParametro
     */
    public void setObjParametros(ArrayList<ParametroConstructorBase> objParametros) {
        this.objParametros = objParametros;
    }

    @Override
    public String toString() {
        try{
            return "ConstructorBase :" + id + " Orden : " + this.orden + " de: " + this.objComponente.strClassPath;
        }catch(java.lang.Exception ex){}
        return null;
    }

    @Override
    public int compareTo(Object o) {
       try{
        ConstructorBase obj = (ConstructorBase) o;
        if(this.id > obj.id)
            return 1;
        else if(this.id < obj.id)
            return -1;
        else
            return 0;
    }catch(java.lang.NullPointerException ex){}
       return 0;
    }
}
